﻿<?php
	//翻页函数封装
	/**
	 * 翻页函数封装
	 * $parem link 数据库连接对象
	 * $parem table 表名
	 * $parem cur_page 当前页
	 * $parem per_page 每页显示的记录数
	 * $parem page_num 固定页码数
	 * @rerurn string 有返回值类型 为string
	 * @author hcs 180330 作者
	 */


	function getPages($link,$table,$cur_page=1,$per_page=4,$page_num=5){

		//翻页功能代码
		//固定每页显示的记录数
		//$per_page=4;

		//固定显示的页码数,来记录页码数
		//$page_num=5;

		//获取页码
		//$cur_page=$_GET['p'];//通过地址栏获取页码参数 当前访问页码数
		/*if($cur_page==''){//判断当刚进入新闻列表页面的时候,页码为空
				$cur_page=1;则将页码强制设置为1,
		}else{
			$cur_page=$_GET['p'];如果页码的值不为空，则等于当前页码数
		}*/
		//或者
		//$cur_page=empty($_GET['p'])?1:$_GET['p'];

		//求limit的偏移量
		//$offset=($cur_page-1)*$per_page;

		//求数据表总记录数
		$sql ="select count(*) as total from `$table` where endble=0";//使查询的表为动态的，前提是文件的命名要与表名一直
		$result=mysqli_query($link,$sql);
		$total_num=mysqli_fetch_assoc($result)['total'];

		//求总页码数并向上取整
		$total_page=ceil($total_num/$per_page);

		//判断
		if($page_num>$total_page)//如果固定页码数大于总页码数
		{
			$page_num=$total_page;//则将固定的页码数设置为总页码数
		}


		//求访问a标签页码的偏移幅 公式=固定页码数/2 向下取整floor()
		$offset_page=floor($page_num/2);//结果值为2

		//计算循环的开始值  当前访问的页码-前后偏移幅
		$star=$cur_page-$offset_page;//结果：-1

		//计算循环的结束值 当前访问的页码+前后偏移幅
		$end=$cur_page+$offset_page;//结果：3

		//判断开始值是否出现负数的优化
		if($star<1){//如果出现负数
			$star=1;//则强制设置为1
			$end=$page_num;//结束值等于固定页码数
		}
		//判断结束页码是否大于总页码数的优化
		if ($end>$total_page) {//当结束页码大于总页码数
			$star=$total_page-$page_num+1;//开始页码=总页码数-固定页码数+1；
			//假设总页码数为20，每页显示5条数据。当显示的最后页码为20的时候，显示了5条页码，20-5=15，但此时应该显示的是16，因此要加1
			$end=$total_page;//则将结束页码强制设置为总页码数
		}

		$pages='';//设置为空，通过for循环拼接页码
		//首页
		$disabled=$cur_page==1?'disabled':'';//当当前页=1的时候则显示禁用的效果
		$href= $cur_page==1?'#':'index.php?admin=1&c='.$GLOBALS['c'].'&a='.$GLOBALS['a'].'&p=1';//当当前页=1的时候，显示禁用效果的功能
		$pages.='<li class="'.$disabled.'"><a href="'.$href.'"  tabindex="0" class="paginate_button first" id="datatable1_first">首页</a></li>';

		//上一页
		$prev=$cur_page-1;
		$prev_href= $cur_page==1?'#':'index.php?admin=1&c='.$GLOBALS['c'].'&a='.$GLOBALS['a'].'&p='.$prev;
		$pages.='<li class="'.$disabled.'"><a href="'.$prev_href.'"  tabindex="0" class="paginate_button previous" id="datatable1_previous">上一页</a></li>';


		//动态生成中间5页页码
		 for($i=$star;$i<=$end;$i++){//页码开始值和结束值不能写死，必须是动态生成的
			// 判断当前页码是否等于循环的$i值，是则显示选择状态的li标签
			if($i==$cur_page){
				$pages.='<li class="active"><a tabindex="0">'.$i.'</a></li>';
			}else{
				$pages.='<li><a href="index.php?admin=1&c='.$GLOBALS['c'].'&a='.$GLOBALS['a'].'&p='.$i.'" tabindex="0"> '.$i.'</a></li>';
			}
		}

		//下一页
		$disabled_q=$cur_page==$total_page?'disabled':'';//当当前页=最后一页的时候则显示禁用的效果
		$next=$cur_page+1;
		$next_href= $cur_page==$total_page?'#':'index.php?admin=1&c='.$GLOBALS['c'].'&a='.$GLOBALS['a'].'&p='.$next;
		$pages.='<li class="'.$disabled.'"><a href="'.$next_href.'" tabindex="0" class="paginate_button next" id="datatable1_next">下一页</a></li>';

		//最后一页
		$last= $cur_page==$total_page?'#':'index.php?admin=1&c='.$GLOBALS['c'].'&a='.$GLOBALS['a'].'&p='.$total_page;//当当前页=1的时候，显示禁用效果的功能
		$pages.='<li class="'.$disabled.'"><a href="'.$last.'" tabindex="0" class="paginate_button last" id="datatable1_last">最后一页</a></li>';


		return $pages;

	}
?>